package com.hfzy.ihk.web.callhistoryold.vo;

import lombok.Data;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.util.Date;
import java.util.List;

@Data
public class CallHistoryOldVo {


    private String PK;

    private String id;

    private String mainCallPhone; //主叫；由拨号时发送过来(与云呼不一样，进入hbase后，统一1.0，2.0把mainCallPhone存客户号码)（按统一成1.0的）

    private String targetCallPhone; //被叫；由拨号时发送过来（经纪手机号码、座机）

    private String showNum; //主显号码：小号、E1固话等；

    private Integer dataId; //置业或app数据库 数据id，用于jms推送数据时，置业或app更新数据的索引；这要求置业或app保存数据成功后再提交呼叫任务到云呼

    private Integer whereFrom; //来源：app(0),置业(1)，洗号(2)，洗主显(3)，job(99999,主要用于批量插入，定时检测是否达到时间阀值)

    private Integer pageFrom; //app盘源(0),app联动call(1),置业盘源(2)，置业联动call(3),电子客簿（4）APP电子客(7)，测试座机页面（5）,app 拨号记录(6), [同步置业数据额外加上的类型 (8)房专家联动call客通话记录,(9)呼入记录,(10)房专家通话记录]

    private String machineFrom;//机器码：用于定位websocket对象（websocket）；app的话，传userId

    private Integer mainCallType; //mainCallPhone是什么号码？经纪人：1， 客户：0

    private String customerName; //客户名字

    private String propertyNo ;    //房源编号或客户编号（使用来源页面pageFrom区分）

    private String project ;       //项目名或客户最新根据（使用来源页面pageFrom区分）

    private String objectId ;       ////置业oracle通话记录中，盘源、客户、项目的id（联动call）

    private Integer commitTo; //提交到哪里：东进(0)/电信(1)，手机（2）(在线),手机离线(3),阿里云(9)

    private String commitOk; //提交呼叫任务到CTI/福建电信 成功

    private Date commitTime; //提交呼叫任务到 CTI/福建电信时间

    private String city;  //经纪所在城市:广州(1)/东莞(2)/佛山(3)

    private String sessionId; //会话ID

    private String callType; //通话类型：呼出(0)、呼入(1),呼出《经纪人呼主显转接到客户》(2)

    private String ims; //计费号码，记录使用哪个计费号码呼出

    private String recordFileUrl; //录音文件地址

    private Integer recordTimeLength; //通话时长（S）

    private Integer points; //消费点数（n个6秒）

    private float money; //通话费用+录音费用

    private String recordFileUrlPartA; //语音分析录音文件地址

    private String voiceType;         //语音分析结果    参照VoiceResultEnum

    private String voiceCategory;     //语音分析结果分类 参照VoiceResultEnum

    private String voiceContent;      //语音分析内容

    private Integer voiceStatus;  //语音-2(旧数据) / "-1"(识别异常) / 0(未识别) / 1(实时已识别) / 2(JOB已识别) /3(无需识别，即已接听)

    private Integer voiceEngine;      //语音引擎 1(讯飞) / 2(百度)

    private Date voiceStartTime;      //语音分析请求时间

    private Date voiceEndTime;        //语音分析返回结果时间

    private Integer interrupt; //是否中断    未中断（"-1"），自动动中断（0），手段中断（1）

    private Date interruptTime; //中断时间

    private String recordFileStatus;//录音文件状态 1、APP有录音且已上传服务器，2、APP有录音但丢失，3、APP未生成录音

    //=================呼叫状态================

    private Boolean mainCallRinging; //主叫响铃

    private Date mainCallRingingTime; //主叫响铃时间

    private Date receiveMainCallRingingTime; //接收主叫响铃状态时间

    private Boolean mainCallAnswered; //主叫应答

    private Date mainCallAnsweredTime; //主叫应答

    private Date receiveMainCallAnsweredTime; //接收主叫应答状态时间

    private Boolean mainCallFailed; //呼叫主叫失败：如果没有响铃，表示主叫空号；如有响铃，表示未接听或把来电号码加入黑名单或手机飞行模式（电信）

    private Date mainCallFailedTime; //呼叫主叫失败时间

    private Date receiveMainCallFailedTime; //接收呼叫主叫失败状态时间

    private Boolean targetCallRinging; //被叫响铃

    private Date targetCallRingingTime; //被叫响铃时间

    private Date receiveTargetCallRingingTime; //接收被叫响铃状态时间

    private Boolean targetCallAnswered; //被叫应答

    private Date targetCallAnsweredTime; //被叫应答

    private Date receiveTargetCallAnsweredTime; //接收被叫应答状态时间

    private Boolean targetCallFailed; //呼叫被叫失败：如果没有响铃，表示被叫空号；如有响铃，表示未接听或把来电号码加入黑名单或手机飞行模式；（电信）

    private Date targetCallFailedTime; //呼叫被叫失败时间

    private Date receiveTargetCallFailedTime; //接收呼叫被叫失败状态时间

    private Date receiveAppStartTime;  //接收app开始呼叫时间

    private Date receiveAppStopTime;   //接收app呼叫结束时间（app_stop状态的接收时间）

    private Date receiveApprecordFileTime; //接收app录音文件时间

    private Date disconnectTime; //通话结束时间（也包含使用手机拨打的结束时间）

    private Date receiveDisconnectTime; //接收通话结束时间状态时间

    private String failedReason; //不能正常通话原因

    private String messageId; //jms msg Id

    private String today;

    private Integer oggChange;  //是否已经将war转成ogg 空或者0 -未转过ogg,1-已成功转了ogg，-1 --转了ogg但是没找到文件，2--成功删除了对应的wav文件，-2--执行了删除文件job但是未找wav文件

    private Integer dealStatus; //是否已经转到HBase标识 空或者0 --未转移，1-已经成功转移，-1转了但是没找到文件(可能为空，可能按规则找不到)，-3（掉了转移接口但是没成功存到hbase）， 2--成功删除了对应的wav文件，-2--执行了删除文件但是job没找到wav

    private String hbaseRecordFileUrl; //hbase录音文件链接

    private String hbaseRecordFileUrlA;//hbase录音文件链接头文件


    private Integer createUserId;

    private String createUserName;//录入人名称

    private String remark;

    private Integer modUserId;

    private Date createTime;

    private Date modTime;

//===============================云呼置业字段======================================//


    private int unitId;//部门ID

    private String unitName;//部门名称


    private int teamId;//组别ID

    private String teamName;//组别名称


    private int managerId;//直属主管ID

    private String managerName;//主管名称


    private int groupManagerId;//团队主管ID

    private String groupManagerName;//团队主管名称


    private int topManagerId;//负责人ID

    private String topManagerName;//负责人名称

    private String managerIds;//所有上级ID，逗号分隔

    private String customerFollowFeedBack;//反馈信息

    private String isHideRecord;//是否隐藏录音

    private String phone;//客户电话

    private String isDeleteRecord;//录音是否删除

    private String totalAddress;//地址

    private Long connectTimeSecond;//通话时长的秒数(被叫通话时长)

    private String customerNo;//客编

    private String isDelete;//是否删除记录

    private String followFeedBack;//复盘楼更

    private String isPushApp;//是否推送至房专家APP

    private String enrollNumber;//工号

    private String isHide;//用于查盘时，控制号码显示隐藏xxxxx

    private int isClickInterruptCall;//是否点击了挂断操作---来源 1：挂断按钮、2：暂停自动call、3：关闭窗体    0--没有执行挂断操作xxxxxxxxx

    private Boolean isPushKafka; //是否推送kafka

    private String isLast;

    private String externalPhone; //对外联系号码

    private String machineNo;//机器码

    private String callFromType;//来源

    private Integer callFromId;//关联ID

    private String callChannel;//来源渠道PC/CellPhone

    private Date dialTime;//拨号时间


    private String feedBack;//反馈状态

    //-----TODO 新增字段用于：阿里云外呼

    private Date mainCallStartTime;

    private Date mainCallEndTime;

    private Date targetCallStartTime;

    private Date targetCallEndTime;

    //=============================通话时长相关统计============================================
    /*@Column(name = "main_call_time_length")
    private Integer mainCallTimeLength = -1; //主叫接通时长（S）
    @Column(name = "target_call_time_length")
    private Integer targetCallTimeLength = -1; //被叫接通时长（S）*/

    /*@Column(name = "main_call_fee_time_length")
    private Integer mainCallFeeTimeLength = -1; //主叫计费时长（S）
    @Column(name = "target_call_fee_time_length")
    private Integer targetCallFeeTimeLength = -1; //被叫计费时长（S）*/


    private Long mainConnentTime;//主叫接通时长（S）(置业字段)

    private Long targetConnectTime;//被叫接通时长（S）(置业字段)


    private Long mainCallLength;//主叫接通时长（S）(现计算时长使用的字段)

    private Long targetCallLength;//被叫接通时长（S）(现计算时长使用的字段)


    private Long mainChargedDuration;//主叫计费时长（S）

    private Long targetChargedDuration;//被叫计费时长（S）

    private String mainCallIsLongDistance; //主叫是长途

    private String targetCallIsLongDistance; //被叫是长途


    @Data
    public class ClickUser{

        private Integer clickUserId;

        private Date clickTime;

        //操作人名称
        private String clickUserName;

    }

    private List<ClickUser> clickUsers;

    private String customerPhone;

    @Field(type = FieldType.Text)
    private String recognitionMsg;

    private String zyRemark;

    private String isPlay;

    private String pageFromDesc;
}
